home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 003 / dba1186.arc / LA_PMT.PRG < prev    next >
Text File  |  1986-10-06  |  5KB  |  156 lines

  1. * -- PROGRAM NAME: .......... LA_PMT.PRG
  2. * -- PROGRAM TITLE: ......... Loan Amortization, Loan Repayment
  3. * -- AUTHOR: ................ Venkat Penugonde
  4. *                             Irvine Micro Arts, Irvine, CA
  5.  
  6. * -- SYSTEM ................. dBASE III & III +
  7.  
  8. * -- DATE FIRST CREATED .............. 08/02/86
  9. * -- DATE MOST RECENTLY MODIFIED ..... 08/21/86
  10. *
  11. *  This program calculates the equal periodic payment of a loan
  12. *  amortized over a given period and loan payment history.
  13. *
  14. *  Inputs required .........  1) Present Value or Principal.
  15. *                             2) Total Number of Payment Periods.
  16. *                             3) Annual Interest Rate.
  17. *                             4) Number of Payment Periods per Year.
  18. *
  19. * Outputs Generated ........  1) Equal Periodic Payment.
  20. *                             2) Time History of Amounts Paid toward
  21. *                                 Principal, Interest and Balance.
  22. *
  23. * Calling Program ..........  LOANAMRT.PRG
  24. * Called Program ...........  None
  25.  
  26. pok  =  'N'
  27. DO WHILE .t.
  28.   CLEAR
  29.   principal = 0.00
  30.   ann_rate  = 0.000
  31.   t_period  = 0
  32.   y_period  = 0
  33.  
  34.   @   2, 27   SAY  '* -- LOAN AMORTIZATION -- *'
  35.   @   3, 27   SAY  '    PERIODIC REPAYMENT'
  36.   @   6, 11   SAY  'Enter Principal [0 to exit] ................ $'
  37.   @   6, 58   GET  principal PICTURE '99,999,999.99'
  38.   READ
  39.   IF principal <= 0
  40.      EXIT
  41.   ENDIF
  42.  
  43.   @   7, 11   SAY  'Enter Annual Interest Rate [%] .............. '
  44.   @   7, 66   GET  ann_rate   PICTURE '99.999'
  45.   @   8, 11   SAY  'Enter Number of Payment Periods ............. '
  46.   @   8, 65   GET  t_period   PICTURE '999'
  47.   @   9, 11   SAY  'Enter Number of Payment Periods/Year ........ '
  48.   @   9, 66   GET  y_period   PICTURE '99'
  49.   READ
  50.   IF  ann_rate <= 0 .OR. t_period <= 0 .OR. y_period <= 0
  51.     LOOP
  52.   ENDIF
  53.  
  54.  
  55.   pay_hist = 'Y'
  56.   @   12, 11  SAY 'Show Payment History? [Y/N]  ' ;
  57.    GET pay_hist  PICTURE '!'
  58.   READ
  59.   IF pay_hist = 'Y'
  60.     pay_num    = 1
  61.     balance    = principal
  62.     t_int_paid = 0.00
  63.     t_pr_paid  = 0.00
  64.     pay_numb   = 1
  65.     pay_numt   = t_period
  66.    *
  67.     @  14, 11 SAY  'Enter beginning payment number .... '
  68.     @  14, 47 GET pay_numb  PICTURE  '999' RANGE 1, t_period
  69.     @  15, 11 SAY  'Enter number of payments desired .. '
  70.     @  15, 47 GET pay_numt PICTURE '999' RANGE 1, t_period-pay_numb+1
  71.     READ
  72.     pay_numx  = pay_numb + pay_numt - 1
  73.   ENDIF
  74.  
  75.   * -- Caluculate interest rate per period
  76.   int_prd =  ann_rate/(y_period*100)
  77.   *
  78.   * -- Calculate periodic payments
  79.   numerator    =   principal*int_prd
  80.   denomanator  =   (1 - (1 + int_prd)**(-t_period))
  81.   payment      =   numerator/denomanator
  82.   *
  83.   pok = 'Y'
  84.   @   17, 11   SAY  'Output to Printer? [Y/N] ' GET pok   PICTURE '!'
  85.   READ
  86.   IF pok = 'Y'
  87.     ready = ' '
  88.     @  18, 11   SAY  'Turn printer on & hit any key to continue ';
  89.      GET ready
  90.     READ
  91.     SET PRINT ON
  92.   ENDIF
  93.  
  94.   CLEAR
  95.   ?
  96.   ? SPACE(27) + '* -- LOAN AMORTIZATION -- *'
  97.   ? SPACE(27) + '     PERIODIC REPAYMENT'
  98.   ?
  99.   ? SPACE(19) + 'PRINCIPAL                 =  ';
  100.    + STR(principal,13,2)
  101.   ? SPACE(19) + 'ANNUAL INTEREST RATE [%]  =  ';
  102.    + SPACE(8)+STR(ann_rate,6,3)
  103.   ? SPACE(19) + 'NUMBER OF PERIODS         =  ';
  104.    + SPACE(7)+STR(t_period,3)
  105.   ? SPACE(19) + 'NUMBER OF PERIODS/YEAR    =  ';
  106.    + SPACE(8)+STR(y_period,2)
  107.   ?
  108.   ? SPACE(19) + 'PAYMENT/PERIOD            =  ' + STR(payment,13,2)
  109.  
  110.  
  111.   IF  pay_hist = 'Y'
  112.    * Calculate amounts toward principal and interest
  113.    * show principal paid, interest paid (current & total) and balance
  114.    ?
  115.    ?
  116.    ? 'pmt#       Principal      Interest      Principal;
  117.       Interest      Balance'
  118.    ? '                This Payment                     To Date;
  119.                Due'
  120.    ? '--------------------------------------------------------;
  121. ---------------------'
  122.    ?
  123.    DO WHILE pay_num <= pay_numx
  124.      int_paid   =   Balance*int_prd
  125.      pr_paid    =   payment - int_paid
  126.      balance    =   balance - pr_paid
  127.      IF BALANCE < 0
  128.        EXIT
  129.      ENDIF
  130.      t_int_paid =   t_int_paid + int_paid
  131.      t_pr_paid  =   t_pr_paid  + pr_paid
  132.  
  133.      IF pay_num >= pay_numb
  134.        ? STR(pay_num, 3)+'   '+STR(pr_paid,13,2)+ ' ' ;
  135.         +STR(int_paid,13,2) +'  '  + STR(t_pr_paid,13,2) ;
  136.         +' '+STR(t_int_paid,13,2) +'  '+STR(balance,13,2)
  137.      ENDIF
  138.  
  139.      pay_num =  pay_num + 1
  140.    ENDDO WHILE pay_num <= pay_numx
  141.   ENDIF
  142.   ?
  143.   ready = ' '
  144.   WAIT 'Press Space Bar To Continue ........... ' TO ready
  145.   IF pok  =  'Y'
  146.     SET PRINT OFF
  147.   ENDIF
  148. ENDDO WHILE .t.
  149.  
  150. IF pok  =  'Y'
  151.   SET PRINT OFF
  152. ENDIF
  153. RETURN
  154. *
  155. * -- EOF LA_PMT --
  156.